# 根据page_id分组

def group_by_page_id(results):
    """根据page_id进行分组"""
    # 实现分组逻辑：key为page_id，value为{page_image_path, data}
    grouped_data = {}
    for result in results:
        page_id = result['page_id']
        page_image_path = result['page_image_path']

        # 首次遇到该page_id时，初始化数据结构
        if page_id not in grouped_data:
            grouped_data[page_id] = {
                'page_image_path': page_image_path,  # 记录该页面的图片路径
                'word_info': []  # 用于存储该页面的所有文字记录
            }

        # 添加当前记录的文字信息
        word_info = {
            'annotation_id': result['annotation_id'],
            'word': result['word'],
            'word_image_path': result['word_image_path'],
            'recognition_rate': float(result['recognition_rate']),
            'word_coordinates': result['word_coordinates'],
        }
        grouped_data[page_id]['word_info'].append(word_info)

    # 按page_id排序后整理结果
    pages_word = []
    # 对page_id进行数字排序
    for page_id in sorted(grouped_data.keys(), key=int):
        page_info = {
            'page_id': page_id,
            'page_image_path': grouped_data[page_id]['page_image_path'],
            'word_info': grouped_data[page_id]['word_info']  # 取出该页面的所有文字记录
        }
        pages_word.append(page_info)

    return pages_word
